<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>原型链上的属性问题</title>
</head>
<body>

</body>
<script>
    // 原型链上的方法和属性无法被复制
    function Person(name) {
        this.name = name;
    }
    
    Person.prototype.greet = function() {
        console.log(`Hello, ${this.name}!`);
    };

    const john = new Person('John');

    const shallowCopy = Object.assign({}, john);

    console.log(shallowCopy); // { name: 'John' }

    shallowCopy.greet(); // TypeError: shallowCopy.greet is not a function

    // 在这个例子中，john 是一个 Person 类的实例，它有一个原型方法 greet。Object.assign({}, john) 只会复制 john 的实例属性 name，
    // 而不会复制原型链上的方法 greet。
    // 因此，当调用 shallowCopy.greet() 时会抛出 TypeError，因为 shallowCopy 没有 greet 方法。
</script>
</html>